type token =
  | PLUS
  | TIMES
  | DIV
  | MINUS
  | CONS
  | EQQ
  | MINOR
  | MAJOR
  | MINOREQ
  | MAJOREQ
  | NEQ
  | MOD
  | HD
  | TL
  | UMINUS
  | AND
  | OR
  | NOT
  | SQUARE
  | CUBE
  | ABS
  | ISNULL
  | EOL
  | LQUADRA
  | RQUADRA
  | LPAREN
  | RPAREN
  | FUN
  | TO
  | VAR of (string)
  | SEMICOLON
  | EQ
  | LET
  | LETREC
  | IN
  | IF
  | THEN
  | ELSE
  | PRINT
  | INT of (int)
  | BOOL of (bool)

val main :
  (Lexing.lexbuf  -> token) -> Lexing.lexbuf -> Ast.root
